/*
 * @Author: Mark
 * @Date: 2018-09-18 08:52:16
 * @LastEditors: Mark
 * @LastEditTime: 2018-09-18 09:01:06
 * @Description: 登录页面的样式文件
 */

import HeaderLogin from '@/components/HeaderLogin'
import User from '@/service/user-service'
import Tips from '@/utils/tipsUtil'
import RulesUtil from '@/utils/rulesUtil'
const _user = new User()
const _tips = new Tips()
const _regular = new RulesUtil()
export default {

  data() {
    //自定义的验证规则 用户名的校验规则
    let validateUsername = (rule, value, callback) => {
      let result = _regular.validate(value, 'username');
      if (result) {
        callback(new Error(result))
      } else {
        callback()
      }
    }

    //自定义的验证规则 手机号码的校验
    let validatePhone = (rule, value, callback) => {
      let result = _regular.validate(value, 'phone');
      if (result) {
        callback(new Error(result))
      } else {
        callback()
      }
    }

    //自定义的验证规则 邮箱的校验
    let validateEmail = (rule, value, callback) => {
      let result = _regular.validate(value, 'email');
      if (result) {
        callback(new Error(result))
      } else {
        callback()
      }
    }

    //自定义的验证规则 密码的校验
    let validatePassWord = (rule, value, callback) => {
      let result = _regular.validate(value, 'password');
      if (result) {
        callback(new Error(result))
      } else {
        callback()
      }
    }


    return {
      form: {
        type: 'username',   // 登录请求类型
        typeValue: '',      // 登录请求的类型对应的value
        password: '',       // 登录请求的密码

        username: '',      // 用于校验时的用户名
        phone: '',         // 用于校验时的手机号
        email: ''          // 用于校验时的邮箱
      },
      rules: {
        //用户名的校验
        username: [{ validator: validateUsername, trigger: 'blur' }],

        //手机号的校验
        phone: [{ validator: validatePhone, trigger: 'blur' }],

        //邮箱的校验
        email: [{ validator: validateEmail, trigger: 'blur' }],

        //密码的校验
        password: [{ validator: validatePassWord, trigger: 'blur' }]
      }
    }
  },
  components: {
    HeaderLogin
  },
  mounted(){
    //取出路由上的从注册跳转过来的用户名
    this.form.typeValue = this.$route.query.username || ''
  },
  methods: {
    /**
     * 登录方法
     */
    onSubmit(formName) {
      let vue = this
      if (vue.validateLogin()) {
        let userInfo = {
          type: vue.form.type,
          typeValue: vue.form.typeValue,
          password: vue.form.password
        }
        _user.login2(userInfo).then(
          res => {
            vue.$router.push({path: '/home'})
          },
          err => {
            _tips.notifyTips(vue, err.msg)
          }
        )
      }
    },

    /**
     * 用户名输入框失去焦点时保存用于校验的用户名
     */
    setUserName() {
      this.form.username = this.form.typeValue
    },

    /**
     * 电话号码输入框失去焦点时保存用于校验的电话号码
     */
    setPhone() {
      this.form.phone = this.form.typeValue
    },

    /**
     * 电子邮箱输入框失去焦点时保存用于校验的电子邮箱
     */
    setEmail() {
      this.form.email = this.form.typeValue
    },

    /**
     * 点击登录按钮时验证字段
     */
    validateLogin() {
      let vue = this
      if (vue.form.typeValue === '') {
        this.$notify({
          title: '警告',
          message: '登录信息不能为空！',
          type: 'warning'
        })
        return false
      } else if (vue.form.password === '') {
        this.$notify({
          title: '警告',
          message: '请输入密码',
          type: 'warning'
        })
        return false
      }
      return true
    },

    /**
     * 点击tab时，重置输入框的值
     */
    clickTab() {
      this.form.typeValue = ''
    }

  }
}
